SuperGIS Desktop 10.1 Help

SGPY Reference

SGPY Reference

說明與Python相關的SuperGIS API 用法

üSGPY函數

üSGPY類別

üMapping Module函數

üMapping Module類別

üDescribe

©2015 Supergeo Technologies Inc. All rights reserved.


Copyright

All Rights Reserved.

The information contained in this document is the exclusive property of Supergeo. This work is protected under Taiwan copyright law and the copyright laws of the given countries of origin and applicable international laws, treaties, and/or conventions. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying or recording, or by any information storage or retrieval system, except as expressly permitted in writing by Supergeo. All requests should be sent to Attention: Contracts Manager, Supergeo, 5F., No. 71, Zhouzi St., Neihu Dist., Taipei, 114, Taiwan. The information contained in this document is subject to change without notice.

Disclaimer

THE DATA INCLUDED IN THIS WORK IS FROM AN INDEPENDENT COMPANY AND, AS SUCH, SUPERGEO MAKES NO GUARANTEES AS TO THE QUALITY, COMPLETENESS, AND/OR ACCURACY OF THE DATA. EVERY EFFORT HAS BEEN MADE TO ENSURE THE ACCURACY OF THE DATA INCLUDED IN THIS WORK, BUT THE INFORMATION IS DYNAMIC IN NATURE AND IS SUBJECT TO CHANGE WITHOUT NOTICE. SUPERGEO AND THE DATA VENDOR(S) ARE NOT INVITING RELIANCE OF THE DATA. AND ONE SHOULD ALWAYS VERIFY ACTUAL DATA AND NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SUPERGEO AND THE DATA VENDOR(S) SHALL ASSUME NO LIABILITY FOR INDIRECT, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.

©2014 Supergeo Technologies Inc. All rights reserved. SuperGIS Desktop, SuperGIS Server, SuperGIS 3D Earth Server, SuperPad, SuperSurv, SuperVeyor, SuperField, SuperGIS Mobile Engine, SuperGIS Engine @supergeotek.com and www.supergeotek.com are trademarks or registered trademarks of Supergeo Technologies Inc. Other companies and products mentioned herein are trademarks or registered trademarks of their respective trademark owners. Android Robot is modified based on work created and shared by Google and Windows Mobile logo is modified based on work created and shared by Microsoft.


SGPY函數

SGPY函數物件,用途為取得地理資料的幾何坐標與屬性資料,更新SGD介面,支援SGD環境設定與地圖輸出等

SGPY 函數分類表

分類項目 | 包含方法 | 備註
Cursor | SearchCursor UpdateCursor |
ListingData | ListFeatureClasses ListFields ListFiles ListRasters ListTables |
General | RunProcess |
GeoProcess | RefreshCatalog RefreshActiveView RefreshTOC ReloadTable | Refresh 類,更新專用
 | SGDExportMap SGDTool SGDWorkSpaceTool SGDOpenDocument SGDPutVariant SGDGetVariant | SGD類
 | FromWKB FromWKT CreateObject SelectLayerByAttribute Describe SetEditTarget | 其他類


Cursor

Cursor 相關函數

主要用途為處理feature Class 或table資料,根據不同的用途,可大致分為以下三種方法

a. SearchCursor: 用於查詢feature Class 資料, 此方法會回傳唯讀Cursor, 可用來查詢資料

b. InsertCursor: 用於新增資料到feature Class中, 此方法會回傳新增資料專用Cursor, 可用來新增資料

c. UpdateCursor: 用於更新feature Class資料, 此方法會回傳新增資料專用Cursor, 可用來更新資料


SearchCursor

用來查詢feature Class 或table資料, 此方法會先從資料集中取得唯讀Cursor, 之後透過迴圈循環的方式, 逐一取得feature Class資料的row data, 再從row data中讀取每筆資料的屬性值, SearchCursor本身也可以加入特定查詢條件與排序條件,取得符合特定條件的資料,在進行讀取。

SearchCursor讀取資料的方法,一般為使用for迴圈或是while迴圈(while需搭配cursor.next()來使用),簡單範例如下

import sgpy

fc = "C:/temp/Line2.shp"

field = "prop2"

cursor = sgpy.SearchCursor(fc)

#透過迴圈,不斷取得每筆資料並讀取,直到取得最後一筆資料為止

for row in cursor:

print(row.getValue(field)) #讀取每筆資料,特定欄位的屬性值

import sgpy

fc = "C:/temp/Line2.shp"

field = "prop2"

cursor = sgpy.SearchCursor(fc)

row = cursor.next() #取得第一筆資料

while row:

print(row.getValue(field)) #讀取第一筆資料,特定欄位的屬性值

row = cursor.next() #取得下一筆資料

語法:

SearchCursor (dataset, where_clause, spatial_reference, fields)

參數 | 說明 | 參數類型
datase | 資料集,可以是feature class shp檔或是geo檔案 | 字串
where_clause (可給或不給) | 查詢條件,用於篩選出符合特定條件的資料,作為查詢成果, 若不指定,則回傳所有的資料, 作為查詢成果 | 字串
fields | 用於過濾查詢成果中的欄位資料 僅將特定欄位資料回傳給Cursor,若不指定,則回傳查詢成果中所有欄位資料 | 字串

回傳值

類型 | 說明
Cursor | Cursor物件,含有查詢成果,可透過迴圈取得查詢成果row data, 逐一查詢每筆資料的屬性值

範例1,查詢特定欄位:

import sgpy

# Input: C:/temp/Line2.shp

# Fields: prop1; prop2; prop3

#建立查詢用cursor物件,保留符合特定條件的查詢成果

rows = sgpy.SearchCursor("D:/temp/Line2.shp", where_clause="prop2 = 'abc'")

# 透過迴圈,逐一取得查詢成果中,每筆資料的屬性值

for row in rows:

print("prop1: {0}, prop2: {1}, prop3: {2}".format(

row.getValue("prop1"),

row.getValue("prop2"),

row.getValue("prop3")))

del row

del rows

範例2, 取得圖形所有點座標:

import sgpy

# Input: C:/temp/Line2.shp

#建立查詢用cursor物件,查詢圖形座標資料

rows = sgpy.SearchCursor("D:/temp/Line2.shp", where_clause="Geometry@")

# 透過迴圈,逐一取得查詢成果中,每筆資料的屬性值

for geom in rows:

pt = geom.next()

while pt:

print str(pt.X) + " " + str(pt.Y)

pt = geom.next()

del row

del rows


UpdateCursor

用於更新資料到feature Class 或table資料, 此方法會先從資料集中取得更新資料用Cursor, 之後透過迴圈循環的方式, 逐一取得feature Class資料的row data, 來更新每筆資料的屬性值。

語法:

UpdateCursor (dataset, where_clause)

參數 | 說明 | 參數類型
datase | 資料集,可以是feature class shp檔或是geo檔案 | 字串
where_clause (可給或不給) | 查詢條件,用於篩選出符合特定條件的資料,作為待更新資料, 若不指定,則回傳所有的資料, 作為待更新資料 | 字串

回傳值

類型 | 說明
Cursor | Cursor物件, 可用來對feature class中的資料進行更新

範例:

import sgpy

# 建立更新資料用Cursor

rows = sgpy.UpdateCursor("D:/temp/Line2.shp", where_clause="prop2 = 'abc'")

for row in rows:

#取得特定欄位的資料,經計算後,將結果寫入特定欄位中

row.setValue("prop1", row.getValue("prop2")+ "a")

rows.updateRow(row) #對資料進行更新

del row

del rows


Cursor _2

ListData

ListData相關函數,主要為用來取得目前地視窗或是工作目錄底下的feature Class ,table或是field等資料,通常需事先設定工作目錄才能使用,根據不同的用途,可大致分為下面幾種

General 函數分類表

分類項目 | 包含方法
ListData | ListFeatureClasses ListFields ListFiles ListRasters ListTables


SearchCursor _2

ListFeatureClasses

用於將圖層集中feature class檔案所在的路徑列印出來

語法:

ListFeatureClasses(wild_card, feature_type)

參數 | 說明 | 參數類型
wild_card | 限制回傳结果的條件,若不指定,則回傳所有feature class檔案所在路徑 | 字串
feature_type | 限制只回傳符合指定幾何類型的feature class, feature_type 可以為下列任一種: 1. point 2. line 3. polygon | 字串

回傳值

類型 | 說明
字串 | feature class檔案所在的路徑所組成的字串

範例:

import sgpy

# 設定工作目錄

sgpy.env.workspace = "D:/temp"

# 列印feature class名稱

results = sgpy.ListFeatureClasses()

for fc in results:

print("File: {0}".format(fc))

print("Fields:")

#列印feature class所有欄位名稱

flds = sgpy.ListFields(fc)

for fld in flds:

print(fld.name)


UpdateCursor _2

ListFields

用於列出Feature class 中所有Fields 物件(屬性欄位物件)

語法:

ListFields (dataset, wild_card)

參數 | 說明 | 參數類型
dataset | Feature class資料集,可以是feature layer 或是Feature class檔案 (.geo或是.shp) | 字串
wild_card | 限制回傳结果的條件,若不指定,則回傳所有Fields 物件 | 字串

回傳值

類型 | 說明
Fields | Feature class 中所有Field物件的集合

範例:

import sgpy

# 從目前圖層集中取得feature layer (feature class)

sgd = sgpy.mapping.MapDocument("current")

df = sgd.activeDataFrame

layerlist = sgpy.mapping.ListLayers(df)

layer=layerlist[0]

# 取得feature class中所有field的集合

fields = sgpy.ListFields(layer)

# 透過迴圈,逐一取得單一field,列印出名稱

for field in fields:

print field.name

del field

del fields


UpdateCursor _2_2

ListFiles

語法:

ListFiles (wild_card)

參數 | 說明 | 參數類型
wild_card | 限制回傳结果的條件,若給".",則回傳所有File 物件 | 字串

回傳值

類型 | 說明
字串 | 工作路徑底下,檔案所在的路徑所組成的字串

範例:

import sgpy

# 設定工作目錄

sgpy.env.workspace = "D:/temp"

# 從工作目錄底下,取得所有附檔名為csv的檔案, 並列印所在檔案路徑

for csv_file in sgpy.ListFiles("*.csv"):

print csv_file


UpdateCursor _2_2_2

ListRasters

語法:

ListRasters (wild_card, raster_type)

參數 | 說明 | 參數類型
wild_card | 限制回傳结果的條件,若不指定,則回傳所有raster class檔案所在路徑 | 字串
raster_type | 限制只回傳符合指定格式的Raster class, raster _type 可以為下列任一種: 1. ecw 2. lan 3. jp2 4. jpg 5. png 6. sgr 7. sid 8. tif | 字串

回傳值

類型 | 說明
字串 | Raster class檔案所在的路徑所組成的字串

範例:

import sgpy

# 設定工作目錄

sgpy.env.workspace = "D:/temp"

# 從工作目錄中,列出png格式的rasters檔案所在路徑

rasters = sgpy.ListRasters("*", "jpg")

for raster in rasters:

print(raster)


UpdateCursor _2_2_2_2

ListTables

語法:

ListTables(wild_card, table_type)

參數 | 說明 | 參數類型
wild_card | 限制回傳结果的條件,若不指定,則回傳所有Fields 物件 | 字串
table_type | 限制只回傳符合指定格式的table, table_type 可以為下列任一種: 1. csv 2. dbf 3. txt 4. xls | 字串

回傳值

類型 | 說明
字串 | Table檔案路徑所組成的字串

範例:

import sgpy

# 設定工作目錄

sgpy.env.workspace = "D:/temp"

# 從工作目錄中,列出所有Table檔案路徑

tables = sgpy.ListTables()

for raster in tables:

print(raster)


General

General函數為通用函數,可用來建立任一類型的物件,或是呼叫特定工具列來處理地理資料

General 函數分類表

分類項目 | 包含方法
General | RunProcess


RunProcess

使用toolkit工具,處理地理資料的方法

語法:

RunProcess (group_name, process_name,…..)

參數 | 說明 | 參數類型
group_name | 要使用工具的群組 | 字串
process_name | 要使用工具的名稱 | 字串
…. | 依所選定的使用工具,決定要輸入給使用工具的參數有幾個 | 字串

RunProcess使用範例

import sgpy

#呼叫toolkit buffer工具

input = "D:/temp/Line2.shp"

output = "D:/ temp/test.shp"

#buffer工具使用 (第一個參數為:buffer所屬工具群組,

第二個為buffer工具名稱)

#(所需參數:輸入檔案,buffer半徑,環域繪製範圍,融合類型,輸出路徑)

result = sgpy.RunProcess('Analysis Tools','Buffer',input,'50','FULL','None',output)


General _2

GeoProcess

GeoProcess 函數為用來操作與管理Desktop軟體各功能,查詢與修改地理資料的操作方法,有下列幾種

GeoProcessor 函數分類

分類項目 | 方法 | 備註
GeoProcessor | InsertCursor SearchCursor UpdateCursor | 請參考 SGPY function 說明
 | ListFeatureClasses ListFields ListFiles ListRasters ListTables ListPrinterNames (有實作,但沒有定義函式) | 請參考 SGPY Listdata 說明
 | RefreshCatalog RefreshActiveView RefreshTOC ReloadTable | Refresh 類,更新專用
 | SGDExportMap SGDTool SGDWorkSpaceTool SGDOpenDocument SGDPutVariant SGDGetVariant | SGD類
 | Describe FromWKB FromWKT CreateObject SelectLayerByAttribute | 其他類


RunProcess _2

RefreshCatalog

更新工作目錄

RefreshCatalog使用範例

import sgpy

# 設定工作目錄

sgpy.env.workspace = "D:/temp"

#更新資料目錄

sgpy.RefreshCatalog()


RefreshActiveView

更新地圖顯示

RefreshActiveView使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中仔入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

# 建立新的Extent位置

ext = sgpy.Extent(307319.656578944, 2776637.25, 308710.892457118, 2776970.39980263)

# 將地圖移到Extent位置上

df.panToExtent(ext) # 將地圖移到位置上

# 地圖更新 (將前面所做的設定,套用到地圖上)

sgpy.RefreshActiveView()


RefreshTOC

更新圖層集列表, 通常用在,修改圖層顯示狀態後, 一併更新圖程集列表的顯示狀態

RefreshTOC使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中載入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

layerlist = sgpy.mapping.ListLayers(df)

layer = layerlist[0]

#將圖層隱藏,不顯示

layer.visible=False

# 地圖更新 (將前面所做的設定,套用到地圖上)

sgpy.RefreshActiveView()

sgpy.RefreshTOC()


ReloadTable

圖層集feature class 屬性資料表更新,通常用在修改feature class屬性資料後, 一併將修改成果更新到以開啟的屬性資料表視窗中

ReloadTable使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中載入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

layerlist = sgpy.mapping.ListLayers(df)

layer = layerlist[0]

#使用Calculate Field,計算屬性表中特定欄位的值

sgpy.RunProcess('Data Management Tools','Calculate Field',layer.name,'prop2','[prop3]')

#屬性資料表更新

sgpy.ReloadTable()


SGDExportMap

開啟地圖匯出功能

SGDExportMap使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中仔入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

# 地圖更新 (將前面所做的設定,套用到地圖上)

sgpy.RefreshActiveView()

#開啟匯出地圖功能,使用者可自行操作匯出地圖

sgpy.SGDExportMap()


Hotkeys

SGDTool

開啟desktop工具的方法

語法:

SGDTool(toolid)

參數 | 說明 | 參數類型
toolid | 要開啟SGD工具的ID,可透過ID開啟特定工具 | 字串

SGDTool使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中仔入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

#開啟編輯工具

sgpy.SGDTool("32956")


SGDWorkSpaceTool

開啟desktop工作目錄專用工具的方法,需指定要對目錄底下的哪個feature calss使用此工具,才能開啟工具,對feature calss做處理

語法:

SGDWorkSpaceTool (toolid,layerindex)

參數 | 說明 | 參數類型
toolid | 要開啟SGD工具的ID,可透過ID開啟特定工具 | 字串
layerindex | 圖層集中,目標圖層的位置 | 常整數

SGDWorkSpaceTool使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中仔入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

#開啟圖層集中,最上方圖層的數屬性資料表

#(34002為代表開啟屬性資料表功能的ID, 0為最上方圖層在圖層集中的位置)

sgpy.SGDWorkSpaceTool("34002",0)


SGDOpenDocument

開啟sgd地圖文件

SGDOpenDocument使用範例

import sgpy

# 在desktop程式,開啟sgd專案

sgpy.SGDOpenDocument("C:\\temp\\test.sgd")

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中載入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

#地圖更新 (將前面所做的設定,套用到地圖上)

sgpy.RefreshActiveView()


SetVariant

設定環境變數

SetVariant(parameter_name,)

參數 | 說明 | 參數類型
parameter_name | 參數名稱 | 字串
parameter_value | 參數值 | 長整數 or字串 or 浮點數 or 布林

SetVariant使用範例

import sgpy

parameter_name = "Test"

parameter_value = 20

#設定參數名稱,參數值

sgpy.SGDPutVariant(parameter_name,parameter_value)

#透過參數名稱取得參數值

val = sgpy.SGDGetVariant(parameter_name)

print(val)


GetVariant

取得環境變數,可使用參數名稱來取得參數值

GetVariant(parameter_name)

參數 | 說明 | 參數類型
parameter_name | 參數名稱 | 字串

Describe使用範例

import sgpy

parameter_name = "Test"

parameter_value = 20

#設定參數名稱,參數值

sgpy.SGDPutVariant(parameter_name,parameter_value)

#透過參數名稱取得參數值

val = sgpy.SGDGetVariant(parameter_name)

print(val)


Describe

取得feature class的描述資料 (如:幾何類型)

Describe (filepath)

參數 | 說明 | 參數類型
filepath | feature class的檔案路徑 | 字串

Describe使用範例

import sgpy

#取得feature class的描述資料

fc =sgpy.Describe("D:/temp/Line2.shp")

#取得幾何類型描述

shptype=fc.shapeType

print shptype


FromWKB

透過wkb格式字串,建立geometry物件

FromWKB(wkb)

參數 | 說明 | 參數類型
wkb | Wkb格式字串 | 字串

FromWKB使用範例

import sgpy

#透過wkt字串,建立新的geometry物件

geo=sgpy.FromWKT("POINT(-111.870478 33.685992)")

#透過wkb字串,建立新的geometry物件

geo2=sgpy.FromWKB(geo.WKB)

#列印geomtery的WKT字串,和幾何類型

print str(geo2.WKT)

print str(geo2.type)

FromWKT

透過wkt格式字串,建立geometry物件

FromWKT (parameter_name)

參數 | 說明 | 參數類型
wkt | Wkb格式字串 | 字串

FromWKT使用範例

import sgpy

#透過wkt字串,建立新的geometry物件

geo=sgpy.FromWKT("POINT(-111.870478 33.685992)")

#列印geomtery的WKT字串,和幾何類型

print str(geo.WKT)

print str(geo.type)


Overview Function

SelectLayerByAttribute

透過wkt格式字串,建立geometry物件

SelectLayerByAttribute(parameter_name, selection_type, where_clause, invert_where_clause)

參數 | 說明 | 參數類型
in_layer | 要查詢的圖層 | 字串
selection_type | 選擇類型,為下列任一種 每種類型會有不同處理方式 NEW – 新的選擇內容將替換當前選擇內容。 OR - 保留舊的選擇內容,並加入新的選擇內容 AND – 只保留舊的選擇內容,與新的選擇內容中,重複的選擇內容,若兩者沒有重複,則不會有任何選擇內容 | 字串
where_clause | 選擇條件 | 字串
invert_where_clause | 指定是否應反轉表達式結果。 NON_INVERT - 將按原樣使用查詢結果。這是默認設置。 INVERT - 將反轉查詢結果。如果使用selection_type選項，將在選擇內容與現有選擇內容組合之前進行反轉。 | 字串

SelectLayerByAttribute使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中載入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

#查詢並選取圖層

sgpy.SelectLayerByAttribute(lyr,"NEW","[prop2] = 'abc'","")

#地圖更新 (將前面所做的選取,套用到地圖上)

sgpy.RefreshActiveView()


Magnifier

SetEditTarget

將特定layer,設定為要編輯圖層

SetEditTarget(layer)

參數 | 說明 | 參數類型
layer | 要指定編輯的圖層 | Layer物件

SetEditTarget使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中載入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr,"AUTO_ARRANGE")

#設定為目前編輯圖層

sgpy.SetEditTarget(lyr)


SGPY類別

SGPY類別相關物件,大多為地理資料的幾何坐標與屬性資料,可透過SGPY函數取得

SGPY 相關物件分類表

分類項目 | 包含物件
Cursor | Cursor Row
Field | Field FieldInfo
General | env Extent Raster
Geometry | Geometry Polygon LineString Multipoint PointGeometry point


Exploring Your Data

Cursor

Cursor類別主要為用於處理feature Class 或table資料,相關物件如下

物件名稱 | 說明
Cursor | feature Class資料指標, 為feature Class的table資料
Row | feature Class的資料列指標, 為為feature Class的table中的某列資料


Cursor

Cursor是一種用來處理feature Class 或table資料的類別, 本身可透過迴圈來取得Cursor中每筆資料的row 物件,再透過row物件, 對每筆資料逐一做處理, Cursor自身有三種主要方法,可以直接對feature Class資料進行新增修改予刪除的動作。

Cursor 類函數

類別函數 | 函數說明
deleteRow(row) | 刪除Couser中的row物件, 被刪除的row物件,必須是目前Couser所指向的那一筆, row被刪除時, 來源feature class 中的資料也會被刪除
insertRow(row) | 新增新的row物件到Couser中, row被新增時, 來源feature class 中的資料也會被新增
updateRow(row) | 更新Couser中的row物件, 被更新的row物件,必須是目前Couser所指向的那一筆, row被更新時, 來源feature class 中的資料也會被更新
newRow() | 建立一個空的row物件 (可透過insertRow新增屬性資料)
Next() | 將Couser指標指向下一筆資料
getCount() | 取得Cursor中的資料總筆數
Reset() | 將Couser指標指向第一筆資料

範例:

1. 查詢資料範例

import sgpy

# Input: C:/temp/Line2.shp

# Fields: prop1; prop2; prop3

# Sort fields: prop2 A

#建立查詢用cursor物件,取得依指定欄位排序,保留特定欄位資訊的查詢成果

rows = sgpy.SearchCursor("D:/temp/Line2.shp", where_clause="prop2 = 'abc'")

# 透過迴圈,逐一取得查詢成果中,每筆資料的屬性值

for row in rows:

print("prop1: {0}, prop2: {1}, prop3: {2}".format(

row.getValue("prop1"),

row.getValue("prop2"),

row.getValue("prop3")))

2. 更新資料範例

import sgpy

# 建立更新資料用Cursor

rows = sgpy.UpdateCursor("D://temp// Line2.shp")

for row in rows:

#取得特定欄位的資料,經計算後,將結果寫入特定欄位中

row.setValue("prop1", str(row.getValue("prop2"))+"a")

rows = sgpy.UpdateCursor("D:/temp/Line2.shp", where_clause="prop2 = 'abc'") #對資料進行更新

del row

del rows


Row

row物件代表feature Class 或table資料中某一列的資料,通常為透過InsertCursor, SearchCursor, UpdateCursor 先取得Cursor, 在透過迴圈逐一取得Cursor中的row物件。

Row 物件函數

類別函數 | 函數說明
setValue (field_name ,updatevalue) | 修改row物件中,指定欄位中所儲存的值,修改後feature Class中對應於該row的資料,也會被修改
getValue (field_name) | 透過row物件,取得feature Class中某筆資料,在取得該資料指定欄位中所儲存的值
setNull (field_name) | 修改row物件中,指定欄位中所儲存的值為Null,修改後feature Class中對應於該row的資料,也會被修改
isNull (field_name) | 透過row物件,取得feature Class中某筆資料,在判斷指定欄位中所儲存的值是否為Null, 若為Null,回傳True,否則回傳False


Map Browsing

Field

Field類別主要功能為取得feature class中的欄位描述資訊,相關物件如下

物件名稱 | 說明
Field | feature Class table 中的各個欄位
FieldInfo | feature Class的欄位總數


Field

Field物件為 feature Class 或table資料中所有欄位的集合,內含許多用來描述每個欄位的屬性資料,包含欄位名稱,欄位資料別名等, field 物件可透過 ListFields方法來取得, 之後可透過迴圈,逐一取得每個欄位的描述。Field物件本身可被更新, 但並不影響feature Class 或table資料的欄位。

Field物件屬性

參數 | 說明 | 參數類型
aliasName (可讀寫) | 欄位別名 | 字串
name (可讀寫) | 欄位名稱 | 字串
type (可讀寫) | 欄位資料類型 | 字串
length (可讀寫) | 欄位長度 | 數值
precision (可讀寫) | 欄位精度 | 數值
editable (可讀寫) | 欄位能否編輯 | 布林值
isNullable (可讀寫) | 欄位可否為Null值 | 布林值

Field使用範例

import sgpy

feature_class = "D:/temp/Line2.shp"

# 透過ListFields,取得feature_class的所有field集合

fields =sgpy.ListFields(feature_class)

#透過迴圈,逐一取的每個field的所有屬性,並列印

for field in fields:

print("Field: {0}".format(field.name))

print("Alias: {0}".format(field.aliasName))

print("Type: {0}".format(field.type))

print("Is Editable: {0}".format(field.editable))

print("Precision: {0}".format(field.precision))

print("Length: {0}".format(field.length))

del field

del fields


FieldInfo

FieldInfo物件包含顯示圖層屬性表時,會用到的資訊。

FieldInfo物件屬性

參數 | 說明 | 參數類型
count (唯讀) | 屬性表的欄位總數 | 常整數

FieldInfo 物件函數

類別函數 | 函數說明
findFieldByName (field_name) | 透過欄位名稱,尋找並回傳欄位所在位置(欄位索引值)
findFieldByNewName (field_name) | 透過新的欄位名稱,尋找並回傳欄位所在位置(欄位索引值)
getFieldName (field_index) | 透過欄位位置(欄位索引值),查詢並回傳欄位名稱
getNewName (field_index) | 透過欄位位置(欄位索引值),查詢並回傳欄位新名稱
getVisible(index) | 透過欄位位置(欄位索引值),查詢該欄位是否有顯示,True表示有顯示,False表示沒顯示
setVisible(index, visible) | 透過欄位位置(欄位索引值),設定該欄位是否可以顯示,True表示要顯示,False表示不顯示

FieldInfo使用範例

import sgpy

feature_class = "D:/temp/Line2.shp"

# 將shp檔加入圖層集中

layer=sgpy.mapping.Layer(feature_class)

# 取得目前圖層集

sgd = sgpy.mapping.MapDocument("current")

df = sgd.activeDataFrame

layerlist = sgpy.mapping.ListLayers(df)

# 取得加入圖層的FieldInfo

finfo = layerlist[0].FieldInfo

# 取得Table的欄位總數

cnt=int(finfo.count)


General

General類別包含許多通用物件, 主要為進行環境設定, 取得坐標統資訊等,相關物件如下

物件名稱 | 說明
Extent | 地圖展示範圍
SpatialReference | 坐標系統資訊
Env | 工作環境
Raster | 網格資料


Extent

Extent為一個涵蓋幾何物件的最小矩形範圍,矩形左下角座標由幾何物件的最小值座標所構成, 矩形右上角由幾何物件的最大值座標所構成,用於定義一個幾何物件的所在範圍。Extent可以從Layer或是dataframe中取得,也可以自行定義。

語法:

Extent(XMin, YMin, XMax, {YMax}, {ZMin}, {ZMax}, {MMin}, {MMax})

參數 | 說明 | 參數類型
XMin | X坐標最小值 | 數值
YMin | Y坐標最小值 | 數值
XMax | X坐標最大值 | 數值
YMax | Y坐標最大值 | 數值
MMin | M最小值 | 數值
MMax | M最大值 | 數值
ZMin | Z坐標最小值 | 數值
ZMax | Z坐標最大值 | 數值

Extent 物件屬性

參數 | 說明 | 參數類型
XMin | X坐標最小值 | 雙精度浮點數
YMin | Y坐標最小值 | 雙精度浮點數
XMax | X坐標最大值 | 雙精度浮點數
YMax | Y坐標最大值 | 雙精度浮點數
MMin | M最小值 | 雙精度浮點數
MMax | M最大值 | 雙精度浮點數
ZMin | Z坐標最小值 | 雙精度浮點數
ZMax | Z坐標最大值 | 雙精度浮點數
width | Extent的寬度值 | 雙精度浮點數
height | Extent的高度值 | 雙精度浮點數
lowerLeft | Extent左下角的點位 | Point
lowerRight | Extent右下角的點位 | Point
upperLeft | Extent左上角的點位 | Point
upperRight | Extent右上角的點位 | Point
spatialReference | Extent所屬的坐標系統 | SpatialReference

Extent 物件函數

類別函數 | 函數說明
contains (geometry) | 判斷Extent 是否有將geometry完全包含,回傳結果為布林值 (True or False)
crosses (geometry) | 判斷Extent 是否和geometry有交集,回傳結果為布林值 (True or False)
disjoint (geometry) | 判斷Extent 是否和geometry是否有共同點,回傳結果為布林值 (True or False)
equals (geometry) | 判斷Extent 是否和geometry完全相同(所有點位完全相同,且geometry類型也相同),回傳結果為布林值 (True or False)
Touches(geometry) | 判斷Extent 是和geometry的boundary有交集,回傳結果為布林值 (True or False)
Within(geometry) | 判斷Extent 是否被geometry完全包含,回傳結果為布林值 (True or False)

Extent使用範例

import sgpy

# 取得目前地圖

sgd = sgpy.mapping.MapDocument("current")

# 取得data frame

df = sgd.activeDataFrame

#從檔案中仔入圖層,並加入data frame中

lyr = sgpy.mapping.Layer("D:/temp/Line2.shp")

sgpy.mapping.AddLayer(df, lyr)

# 建立新的Extent位置

ext = sgpy.Extent(307319.656578944, 2776637.25, 308710.892457118, 2776970.39980263)

# 將地圖移到Extent位置上

df.panToExtent(ext) # 將地圖移到位置上

# 地圖更新 (將前面所做的設定,套用到地圖上)

sgpy.RefreshActiveView()


SpatialReference

SpatialReference物件有許多的屬性,用來描述目前所使用的座標系統定義,包含坐標軸,座標值與座標值單位大小等基本定義。

SpatialReference 物件屬性

參數 | 說明 | 參數類型
type (唯讀) | 坐標系統種類 | 字串
name (可讀寫) | 坐標系統名稱 | 字串
alias (唯讀) | 坐標系統的坐標軸 | 字串
abbreviation (可讀寫) | 坐標系統的簡稱 | 字串
remarks (可讀寫) | 坐標系統的註記 | 字串
factoryCode (可讀寫) | 坐標系統的factoryCode | 字串
PCSName (可讀寫) | 投影坐標系統名稱 | 字串
PCSCode (可讀寫) | 投影坐標系統代碼 | 長整數
GCS (可讀寫) | 地理坐標系統物件 | SpatialReference
GCSName (可讀寫) | 地理坐標系統名稱 | 字串
GCSCode (可讀寫) | 地理坐標系統代碼 | 長整數
spheroidName (可讀寫) | 坐標系統使用的參考橢球名稱 | 字串
spheroidCode (可讀寫) | 坐標系統使用的參考橢球代碼 | 長整數
projectionName (可讀寫) | 投影坐標系統名稱 | 字串
projectionCode (可讀寫) | 投影坐標系統代碼 | 長整數
datumName (可讀寫) | 所使用的大地基準名稱 | 字串
datumCode (可讀寫) | 所使用的大地基準代碼 | 長整數
primeMeridianName (可讀寫) | 本初子午線名稱 | 字串
primeMeridianCode (可讀寫) | 本初子午線代碼 | 長整數
angularUnitName (可讀寫) | 角度單位名稱 | 字串
angularUnitCode (可讀寫) | 角度單位代碼 | 長整數
linearUnitName (可讀寫) | 線性距離單位名稱 | 字串
linearUnitCode (可讀寫) | 線性距離單位名稱 | 長整數
Usage (可讀寫) | 坐標系統說明文字 | 字串
centralMeridian (可讀寫) | 本初子午線所在的經度 | 雙精度浮點數
standardParallel1 (可讀寫) | 投影坐標系統的第一投影平面 | 雙精度浮點數
standardParallel2 (可讀寫) | 投影坐標系統的第二投影平面 | 雙精度浮點數
longitudeOf1st (可讀寫) | 投影坐標系統上第一個點的經度值 | 雙精度浮點數
longitudeOf2nd (可讀寫) | 投影坐標系統上第二個點的經度值 | 雙精度浮點數
scaleFactor (可讀寫) | 投影坐標系統的尺度 | 雙精度浮點數
azimuth (可讀寫) | 投影坐標系統的方位 | 雙精度浮點數
semiMajorAxis (可讀寫) | 參考橢球的長軸 | 雙精度浮點數
semiMinorAxis (可讀寫) | 參考橢球的短軸 | 雙精度浮點數
flattening (可讀寫) | 參考橢球的扁率 | 雙精度浮點數
longitude (可讀寫) | 本初子午線的緯度值 | 雙精度浮點數
radiansPerUnit (可讀寫) | 徑度單位(一徑度為多少角度) | 雙精度浮點數
metersPerUnit (可讀寫) | 長度單位(一單位為多少公尺) | 雙精度浮點數
classification (可讀寫) | 所屬地圖投影類別 | 字串
falseEasting (可讀寫) | 投影時橫坐標的偏移距離 | 雙精度浮點數
falseNorthing (可讀寫) | 投影時縱坐標的偏移距離 | 雙精度浮點數

SpatialReference 物件函數

類別函數 | 函數說明
CreateFromFile (prj_file) | 讀取prj檔(投影坐標系統檔),建立投影坐標系統物件
ExportToString (geometry) | 將坐標系統的描述,以文字方式輸出
LoadFromString (geometry) | 讀取坐標系統文字敘述,依序述內容建立坐標系統

SpatialReference使用範例

import sgpy

# 從prj檔中取得坐標系統

feature_class = "D://temp// Line2.prj"

srByPrj = sgpy.SpatialReference(feature_class)

# 列印坐標系統名稱

print("Name: {0}".format(srByPrj.name))

# 透過坐標系統代碼,建立新坐標系統物件,並列印名稱

srByCode = sgpy.SpatialReference(4326)

print("Name: {0}".format(srByCode.name))


Env

Env為處理環境設定物件,內含檔案輸入輸出存放位置,是否複寫檔案,是否將處理成果加入地圖中等設定。

Env物件屬性

參數 | 說明 | 參數類型
addOutputsToMap (可讀寫) | 是否要將處理成果加入地圖中, True為要加入,False為不加入 | 布林值
overwriteOutput (可讀寫) | 執行工具時,是否要複寫舊的成果,True為複寫,False為不複寫 | 布林值
workspace (可讀寫) | 使用地理處理工具時,輸入檔案與輸出成果的所在的資料夾位置 | 字串

Env使用範例

import sgpy

# 設定工作目錄

sgpy.env.workspace="D:/temp"

# 列印出工作目錄底下所有檔案名稱

files=sgpy.ListFiles("*")

for file2 in files:

print file2


Setting the Symbology Type

Raster

Raster物件包含一個工具運行處理後的結果,和相關訊息。

Raster物件屬性

參數 | 說明 | 參數類型
bandCount (唯讀) | 網格資料的波段數目 | 長整數
catalogPath (唯讀) | 網格資料所在的目錄路徑 | 字串
extent (唯讀) | 網格資料所在的範圍 | extent
format (唯讀) | 網格資料格式,為下列任一類型 1. BMP 2. DAT 3. GIF 4. IMAGINE 5. JP2000 6. JPEG 7. PNG 8. TIFF 9. ECW 10. LAN 11. GIS 12. SGR 13. MrSID 14. GeoTIFF | 字串
height (唯讀) | 網格資料的列數 | 長整數
maximum (唯讀) | 網格資料中的最大值 | 雙精度浮點數
mean (唯讀) | 網格資料的平均值 | 雙精度浮點數
meanCellHeight (唯讀) | 網格每一cell ,y軸方向的長度大小 | 雙精度浮點數
meanCellWidth (唯讀) | 網格每一cell ,x軸方向的長度大小 | 雙精度浮點數
minimum (唯讀) | 網格資料中的最小值 | 雙精度浮點數
name (唯讀) | 網格資料的名稱 | 字串
noDataValue (唯讀) | 網格資料中,代表NoData的值 | 雙精度浮點數
pixelType (唯讀) | 網格pixel格式, 為下列任一類型 1. U1—1 bit 2. U2—2 bits 3. U4—4 bits 4. U8—Unsigned 8 bit integers 5. S8—8 bit integers 6. U16—Unsigned 16 bit integers 7. S16—16 bit integers 8. U32—Unsigned 32 bit integers 9. S32—32 bit integers 10. F32—Single precision floating point 11. F64—Double precision floating point | 字串
spatialReference (唯讀) | 網格資料的參考坐標系統 | spatialReference
standardDeviation(唯讀) | 網個資料的標準偏差 | 雙精度浮點數
uncompressedSize (唯讀) | 網格資料的檔案大小 | 雙精度浮點數
width (唯讀) | 網格資料的行數 | 長整數

Raster物件函數

類別函數 | 函數說明
save(name) | 網格資料以特定名稱,儲存於硬碟中

Raster使用範例

import sgpy

# 取得tif網格資料

tif = sgpy.Raster("D:/Test Data/Raster/SG_t0.tif")

#列印網格資料說明資訊

print("Name: {0}".format(tif.name))

print("Format: {0}".format(tif.format))

print("Width,Height: {0},{1}".format(tif.width, tif.height))

print("BandCount: {0}".format(tif.bandCount))

print("PixelType: {0}".format(tif.pixelType))

print("UncompressedSize: {0} Bytes".format(tif.uncompressedSize))

print("***Raster Statistics***")

print("Min: {0}".format(tif.minimum))

print("Max: {0}".format(tif.maximum))

print("Mean: {0}".format(tif.mean))

print("Standard Deviation: {0}".format(tif.standardDeviation))


Geometry

Geometry類別主要用途為以幾何圖形方式描述現實事件中的地理特徵, 相關物件如下

物件名稱 | 說明
Geometry | 幾何圖形
Polygon | 面
LineString | 線段
Multipoint | 多重點
PointGeometry | 單一幾何點
Point | 單一點


Geometry

Geometry物件包含一系列幾何圖形的坐標, 用來定義與空間有關連的幾何形狀與位置, Geometry物件可以自行定義,有可以從其他物件中取得。

語法:

Geometry (geometry, inputs, spatial_reference, has_z, has_m)

參數 | 說明 | 參數類型
geometry | 幾何類型,有:點,線,面,多重點等幾種類型 | 字串
inputs | 用來建立Geometry物件的點資料,可以是一個點或是由多個點組成的陣列 | 物件
spatial_reference | Geometry所屬的坐標系統 | spatialReference
has_z | Geometry是否有Z值,True表示有,False表示沒有 | 布林
has_m | Geometry是否有M值,True表示有,False表示沒有 | 布林

Geometry物件屬性

參數 | 說明 | 參數類型
WKB (唯讀) | 構成Geometry的WKB資料 | Bytearray
WKT (唯讀) | 構成Geometry的WKT字串資料 | 字串
Area (唯讀) | Geometry的面積大小,幾何類型為面的Geometry才有, 幾何類型非面者為Null | 雙精度浮點數
Centroid (唯讀) | Geometry的質心點, 如果質心點是落在Geometry圖形中間或是邊界上,才會回傳質心點 | Point
Extent (可讀寫) | Geometry的範圍 | extent
firstPoint (唯讀) | Geometry的起始點位 | Point
hullRectangle (唯讀) | 以空格分隔的凸包矩形坐標對的字符串。 | 字串
isMultipart (唯讀) | Geometry本身是否由兩個以上的部分組成,是的話為Ture,不是的話為False | 布林
labelPoint (唯讀) | Geometry物件之標題所在的點位,該點位必定落在Geometry之內 | Point
lastPoint (唯讀) | Geometry的結束點位 | Point
length (唯讀) | Geometry物件的長度,點資料或是多重點資料,為0 | 雙精度浮點數
length3D (唯讀) | Geometry物件的3D長度,點資料或是多重點資料,為0 | 雙精度浮點數
partCount (唯讀) | 構成Geometry物件的部分有幾個 | 長整數
pointCount (唯讀) | 構成Geometry物件的所有點數量 | 長整數
spatialReference (唯讀) | Geometry物件的座標系統 | spatialReference
trueCentroid (唯讀) | Geometry的重心點 | Point
type (唯讀) | Geometry的幾何類型,有:點,線,面,多重點等幾種類型 | 字串

Geometry 物件函數

類別函數 | 函數說明
Boundary() | 回傳構成Geometry的邊線
Buffer(distance) | 依半徑, 建立並回傳Geometry的環域
Contains(sec_geometry) | 判斷Geometry是否有將sec_geometry完全包含,回傳結果為布林值 (True or False)
ConvexHull() | 建立並回傳包圍Geometry的最小面積多邊形
Crosses() | 判斷Geometry 是否和sec_geometry有相交,回傳結果為布林值 (True or False)
Difference(sec_geometry) | 以sec_geometry為目標,將Geometry和sec_geometry交集到的範圍扣除後再回傳,回傳成果為Geometry物件
Disjoint(sec_geometry) | 判斷Geometry 是否和sec_geometry有共同點,回傳結果為布林值 (True or False)
DistanceTo(sec_geometry) | 回傳Geometry 到sec_geometry之間的最短距離,如果兩者相交,則距離為0
Equals(sec_geometry) | 判斷Geometry 是否和sec_geometry完全相同(所有點位完全相同,且geometry類型也相同),回傳結果為布林值 (True or False) (僅做2D比較,不比較Z值和M值)
GetArea() | 取得Geometry的面積
GetLength() | 取得Geometry的長度
GetPart() | 取得構成Geometry的部分有幾個
Intersect(sec_geometry) | 產生Geometry 和sec_geometry的交集區域,並回回傳該區域
MeasureOnLine(in_point) | 回傳in_point到Geometry起始點的距離
Overlaps(sec_geometry) | 判斷Geometry 是否和sec_geometry有重疊,回傳結果為布林值 (True or False) (重疊定義: Geometry 是和sec_geometry為相同幾何類型,且兩者之間有部分重疊)
PositionAlongLine(distance) | 返回與起始點之間,間隔特定距離的點位
SymmetricDifference (sec_geometry) | 回傳Geometry 和sec_geometry之間的聯集減去Geometry 和sec_geometry之間的交集的成果
Touches(second_geometry) | 判斷Geometry 和sec_geometry兩者的邊界是否相交,回傳結果為布林值 (True or False)
Union(second_geometry) | 回傳Geometry 和sec_geometry之間的聯集
Within(second_geometry) | 判斷Geometry sec_geometry兩者的邊界是否相交,回傳結果為布林值 (True or False)
next() | 回傳構成Geometry的點資料 (每呼叫一次,會依序回傳構成Geometry的點 通常搭配while 使用,取得所有點資料)

Geometry使用範例

import sgpy

#透過wkt字串,建立新的geometry物件

geo=sgpy.FromWKT("POINT(-111.870478 33.685992)")

#列印geomtery的WKT字串,和幾何類型

print str(geo.WKT)

print str(geo.type)

print str(geo.pointCount)


Polygon

Polygon物件是指由一系列相連的 x,y 坐標對定義的閉合形狀。

語法:

Polygon (inputs, spatial_reference, has_z, has_m)

參數 | 說明 | 參數類型
inputs | 用來建立Polygon物件的點資料,可以是一個點或是由多個點組成的陣列 | 物件
spatial_reference | Polygon所屬的坐標系統 | spatial_reference
has_z | Polygon是否有Z值,True表示有,False表示沒有 | 布林
has_m | Polygon是否有M值,True表示有,False表示沒有 | 布林

Polygon物件屬性

參數 | 說明 | 參數類型
WKB (唯讀) | 構成Polygon的WKB資料 | Bytearray
WKT (唯讀) | 構成Polygon的WKT字串資料 | 字串
Area (唯讀) | Polygon的面積大小 | 雙精度浮點數
Centroid (唯讀) | Polygon的質心點, 如果質心點是落在Geometry圖形中間或是邊界上,才會回傳質心點 | Point
Extent (可讀寫) | Polygon的範圍 | extent
firstPoint (唯讀) | Polygon的起始點位 | Point
hullRectangle (唯讀) | 以空格分隔的凸包矩形坐標對的字符串。 | 字串
isMultipart (唯讀) | Polygon本身是否由兩個以上的部分組成,是的話為Ture,不是的話為False | 布林
labelPoint (唯讀) | Polygon物件之標題所在點位,該點位必定落在Polygon之內 | Point
lastPoint (唯讀) | Polygon的結束點位 | Point
length (唯讀) | Polygon物件的長度,點資料或是多重點資料,為0 | 雙精度浮點數
length3D (唯讀) | Polygon物件的3D長度,點資料或是多重點資料,為0 | 雙精度浮點數
partCount (唯讀) | 構成Polygon物件的幾何部分有幾個 | 長整數
pointCount (唯讀) | 構成Polygon物件的所有點數量 | 長整數
spatialReference (唯讀) | Polygon物件的坐標系統 | spatialReference
trueCentroid (唯讀) | Polygon的重心點 | Point
type (唯讀) | Polygon的幾何類型 | 字串

Polygon 物件函數

類別函數 | 函數說明
Boundary() | 回傳構成Polygon的邊線
Buffer(distance) | 依半徑, 建立並回傳Polygon的環域
Contains(sec_geometry) | 判斷Polygon是否有將sec_geometry完全包含,回傳結果為布林值 (True or False)
ConvexHull() | 建立並回傳包圍Polygon的最小面積多邊形
Crosses() | 判斷Polygon 是否和sec_geometry有相交,回傳結果為布林值 (True or False)
Difference(sec_geometry) | 以sec_geometry為目標,將Polygon和sec_geometry交集到的範圍扣除後再回傳,回傳成果為Polygon物件
Disjoint(sec_geometry) | 判斷Polygon 是否和sec_geometry有共同點,回傳結果為布林值 (True or False)
DistanceTo(sec_geometry) | 回傳Polygon 到sec_geometry之間的最短距離,如果兩者相交,則距離為0
Equals(sec_geometry) | 判斷Polygon 是否和sec_geometry完全相同(所有點位完全相同,且geometry類型也相同),回傳結果為布林值 (True or False) (僅做2D比較,不比較Z值和M值)
GetArea() | 取得Polygon的面積
GetLength() | 取得Polygon的長度
GetPart() | 取得構成Polygon的幾何部分有幾個
Intersect(sec_geometry) | 產生Polygon 和sec_geometry的交集區域,並回回傳該區域
MeasureOnLine(in_point) | 回傳in_point到Polygon起始點的距離
Overlaps(sec_geometry) | 判斷Polygon是否和sec_geometry有重疊,回傳結果為布林值 (True or False) (重疊定義: Polygon 是和sec_geometry為相同幾何類型,且兩者之間有部分重疊)
PositionAlongLine(distance) | 返回與起始點之間,間隔特定距離的點位
SymmetricDifference (sec_geometry) | 回傳Polygon 和sec_geometry之間的聯集減去Polygon 和sec_geometry之間的交集的成果
Touches(second_geometry) | 判斷Polygon 和sec_geometry兩者的邊界是否相交,回傳結果為布林值 (True or False)
Union(second_geometry) | 回傳Polygon 和sec_geometry之間的聯集
Within(second_geometry) | 判斷Polygon 是否完全落在sec_geometry中,的邊界是否相交,回傳結果為布林值 (True or False)

Polygon使用範例

import sgpy

#透過wkt字串,建立新的polygon物件

geo=sgpy.FromWKT("POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))")

#列印polygon的面積,和組成部分有幾個

print str(geo.GetArea())

print str(geo.partCount)


LineString

LineString是由一個或多個路徑定義的形狀，其中路徑是指一系列相連線段。

語法:

LineString (inputs, spatial_reference, has_z, has_m)

參數 | 說明 | 參數類型
inputs | 用來建立LineString物件的點資料,可以是一個點或是由多個點組成的陣列 | 物件
spatial_reference | LineString所屬的坐標系統 | spatial_reference
has_z | LineString是否有Z值,True表示有,False表示沒有 | 布林
has_m | LineString是否有M值,True表示有,False表示沒有 | 布林

LineString物件屬性

參數 | 說明 | 參數類型
WKB (唯讀) | 構成LineString的WKB資料 | Bytearray
WKT (唯讀) | 構成LineString的WKT字串資料 | 字串
Centroid (唯讀) | LineString的質心點, 如果質心點是落在LineString圖形中間或是邊界上,才會回傳質心點 | Point
Extent (可讀寫) | LineString的範圍 | extent
firstPoint (唯讀) | LineString的起始點位 | Point
hullRectangle (唯讀) | 以空格分隔的凸包矩形坐標對的字符串。 | 字串
isMultipart (唯讀) | LineString本身是否由兩個以上的部分組成,是的話為Ture,不是的話為False | 布林
labelPoint (唯讀) | LineString物件之標題所在點位,該點位必定落在LineString之上 | Point
lastPoint (唯讀) | LineString的結束點位 | Point
length (唯讀) | LineString物件的長度,點資料或是多重點資料,為0 | 雙精度浮點數
length3D (唯讀) | LineString物件的3D長度,點資料或是多重點資料,為0 | 雙精度浮點數
partCount (唯讀) | 構成LineString物件的幾何部分有幾個 | 長整數
pointCount (唯讀) | 構成LineString物件的所有點數量 | 長整數
spatialReference (唯讀) | LineString物件的坐標系統 | spatialReference
trueCentroid (唯讀) | LineString的重心點 | Point
type (唯讀) | LineString的幾何類型 | 字串

LineString 物件函數

類別函數 | 函數說明
Boundary() | 回傳構成LineString的邊線
Buffer(distance) | 依半徑, 建立並回傳Polygon的環域
Contains(sec_geometry) | 判斷LineString是否有將sec_geometry完全包含,回傳結果為布林值 (True or False)
ConvexHull() | 建立並回傳包圍LineString的最小面積多邊形
Crosses() | 判斷LineString 是否和sec_geometry有相交,回傳結果為布林值 (True or False)
Difference(sec_geometry) | 以sec_geometry為目標,將LineString和sec_geometry交集到的範圍扣除後再回傳,回傳成果為Polygon物件
Disjoint(sec_geometry) | 判斷LineString是否和sec_geometry有共同點,回傳結果為布林值 (True or False)
DistanceTo(sec_geometry) | 回傳LineString 到sec_geometry之間的最短距離,如果兩者相交,則距離為0
Equals(sec_geometry) | 判斷LineString 是否和sec_geometry完全相同(所有點位完全相同,且geometry類型也相同),回傳結果為布林值 (True or False) (僅做2D比較,不比較Z值和M值)
GetLength() | 取得LineString的長度
GetPart() | 取得構成LineString的幾何部分有幾個
Intersect(sec_geometry) | 產生LineString 和sec_geometry的交集區域,並回回傳該區域
MeasureOnLine(in_point) | 回傳in_point到LineString起始點的距離
Overlaps(sec_geometry) | 判斷LineString是否和sec_geometry有重疊,回傳結果為布林值 (True or False) (重疊定義: LineString 是和sec_geometry為相同幾何類型,且兩者之間有部分重疊)
PositionAlongLine(distance) | 返回與起始點之間,間隔特定距離的點位
SymmetricDifference (sec_geometry) | 回傳LineString 和sec_geometry之間的聯集減去LineString和sec_geometry之間的交集的成果
Touches(second_geometry) | 判斷LineString 和sec_geometry兩者的邊界是否相交,回傳結果為布林值 (True or False)
Union(second_geometry) | 回傳LineString 和sec_geometry之間的聯集
Within(second_geometry) | 判斷LineString 是否完全落在sec_geometry中,的邊界是否相交,回傳結果為布林值 (True or False)

LineString使用範例

import sgpy

#透過wkt字串,建立新的LineString物件

geo=sgpy.FromWKT("LINESTRING (30 10, 10 30, 40 40)")

#列印geomtery的WKT字串,和幾何類型

print str(geo.GetLength())

print str(geo.partCount)


Multipoint

Multipoint物件是點的有序集合。

語法:

Multipoint (inputs, spatial_reference, has_z, has_m)

參數 | 說明 | 參數類型
inputs | 用來建立Multipoint物件的點資料,可以是一個點或是由多個點組成的陣列 | 物件
spatial_reference | Multipoint所屬的坐標系統 | spatial_reference
has_z | Multipoint是否有Z值,True表示有,False表示沒有 | 布林
has_m | Multipoint是否有M值,True表示有,False表示沒有 | 布林

Multipoint物件屬性

參數 | 說明 | 參數類型
WKB (唯讀) | 構成Multipoint的WKB資料 | Bytearray
WKT (唯讀) | 構成Multipoint的WKT字串資料 | 字串
Centroid (唯讀) | Multipoint的質心點, 如果質心點是落在Multipoint圖形中間或是邊界上,才會回傳質心點 | Point
Extent (可讀寫) | Multipoint的範圍 | extent
firstPoint (唯讀) | Multipoint的起始點位 | Point
hullRectangle (唯讀) | 以空格分隔的凸包矩形坐標對的字符串。 | 字串
isMultipart (唯讀) | Multipoint本身是否由兩個以上的部分組成,是的話為Ture,不是的話為False | 布林
labelPoint (唯讀) | Multipoint物件之標題所在點位,該點位必定落在Multipoint之上 | Point
lastPoint (唯讀) | Multipoint的結束點位 | Point
partCount (唯讀) | 構成Multipoint物件的幾何部分有幾個 | 長整數
pointCount (唯讀) | 構成Multipoint物件的所有點數量 | 長整數
spatialReference (唯讀) | Multipoint物件的坐標系統 | spatialReference
trueCentroid (唯讀) | Multipoint的重心點 | Point
type (唯讀) | Multipoint的幾何類型 | 字串

Multipoint 物件函數

類別函數 | 函數說明
Buffer(distance) | 依半徑, 建立並回傳Polygon的環域
Contains(sec_geometry) | 判斷Multipoint是否有將sec_geometry完全包含,回傳結果為布林值 (True or False)
ConvexHull() | 建立並回傳包圍Multipoint的最小面積多邊形
Crosses() | 判斷Multipoint 是否和sec_geometry有相交,回傳結果為布林值 (True or False)
Difference(sec_geometry) | 以sec_geometry為目標,將Multipoint和sec_geometry交集到的範圍扣除後再回傳,回傳成果為Polygon物件
Disjoint(sec_geometry) | 判斷Multipoint是否和sec_geometry有共同點,回傳結果為布林值 (True or False)
DistanceTo(sec_geometry) | 回傳Multipoint到sec_geometry之間的最短距離,如果兩者相交,則距離為0
Equals(sec_geometry) | 判斷Multipoint 是否和sec_geometry完全相同(所有點位完全相同,且geometry類型也相同),回傳結果為布林值 (True or False) (僅做2D比較,不比較Z值和M值)
GetPart() | 取得構成Multipoint的幾何部分有幾個
Intersect(sec_geometry) | 產生Multipoint 和sec_geometry的交集區域,並回回傳該區域
MeasureOnLine(in_point) | 回傳in_point到Multipoint起始點的距離
Overlaps(sec_geometry) | 判斷Multipoint是否和sec_geometry有重疊,回傳結果為布林值 (True or False) (重疊定義: Polygon 是和sec_geometry為相同幾何類型,且兩者之間有部分重疊)
PositionAlongLine(distance) | 返回與起始點之間,間隔特定距離的點位
SymmetricDifference (sec_geometry) | 回傳Multipoint 和sec_geometry之間的聯集減去Multipoint和sec_geometry之間的交集的成果
Touches(second_geometry) | 判斷Multipoint和sec_geometry兩者的邊界是否相交,回傳結果為布林值 (True or False)
Union(second_geometry) | 回傳Multipoint 和sec_geometry之間的聯集
Within(second_geometry) | 判斷Multipoint 是否完全落在sec_geometry中,的邊界是否相交,回傳結果為布林值 (True or False)

Multipoint使用範例

import sgpy

#透過wkt字串,建立新的Multipoint物件

geo=sgpy.FromWKT("MULTIPOINT ((10 40), (40 30), (20 20), (30 10))")

#列印Multipoint是否由多個部分組成,組成部分有幾個

print str(geo.isMultipart)

print str(geo.partCount)


PointGeometry

Point物件是單一幾何點。

語法:

PointGeometry (inputs, spatial_reference, has_z, has_m)

參數 | 說明 | 參數類型
inputs | 用來建立Multipoint物件的點資料,可以是一個點或是由多個點組成的陣列 | 物件
spatial_reference | Multipoint所屬的坐標系統 | spatial_reference
has_z | Multipoint是否有Z值,True表示有,False表示沒有 | 布林
has_m | Multipoint是否有M值,True表示有,False表示沒有 | 布林

PointGeometry物件屬性

參數 | 說明 | 參數類型
WKB (唯讀) | 構成PointGeometry的WKB資料 | Bytearray
WKT (唯讀) | 構成PointGeometry的WKT字串資料 | 字串
Centroid (唯讀) | PointGeometry的質心點, 如果質心點是落在PointGeometry圖形中間或是邊界上,才會回傳質心點 | Point
Extent (可讀寫) | PointGeometry的範圍 | extent
firstPoint (唯讀) | PointGeometry的起始點位 | Point
hullRectangle (唯讀) | 以空格分隔的凸包矩形坐標對的字符串。 | 字串
isMultipart (唯讀) | PointGeometry本身是否由兩個以上的部分組成,是的話為Ture,不是的話為False | 布林
labelPoint (唯讀) | PointGeometry物件之標題所在點位,該點位必定落在PointGeometry之上 | Point
lastPoint (唯讀) | PointGeometry的結束點位 | Point
partCount (唯讀) | 構成PointGeometry物件的幾何部分有幾個 | 長整數
pointCount (唯讀) | 構成PointGeometry物件的所有點數量 | 長整數
spatialReference (唯讀) | PointGeometry物件的坐標系統 | spatialReference
trueCentroid (唯讀) | PointGeometry的重心點 | Point
type (唯讀) | PointGeometry的幾何類型 | 字串

PointGeometry 物件函數

類別函數 | 函數說明
Buffer(distance) | 依半徑, 建立並回傳Polygon的環域
Contains(sec_geometry) | 判斷PointGeometry是否有將sec_geometry完全包含,回傳結果為布林值 (True or False)
ConvexHull() | 建立並回傳包圍PointGeometry的最小面積多邊形
Crosses() | 判斷PointGeometry 是否和sec_geometry有相交,回傳結果為布林值 (True or False)
Difference(sec_geometry) | 以sec_geometry為目標,將PointGeometry和sec_geometry交集到的範圍扣除後再回傳,回傳成果為Polygon物件
Disjoint(sec_geometry) | 判斷PointGeometry是否和sec_geometry有共同點,回傳結果為布林值 (True or False)
DistanceTo(sec_geometry) | 回傳PointGeometry 到sec_geometry之間的最短距離,如果兩者相交,則距離為0
Equals(sec_geometry) | 判斷PointGeometry 是否和sec_geometry完全相同(所有點位完全相同,且geometry類型也相同),回傳結果為布林值 (True or False) (僅做2D比較,不比較Z值和M值)
GetPart() | 取得構成PointGeometry的幾何部分有幾個
Intersect(sec_geometry) | 產生PointGeometry 和sec_geometry的交集區域,並回回傳該區域
MeasureOnLine(in_point) | 回傳in_point到PointGeometry起始點的距離
Overlaps(sec_geometry) | 判斷PointGeometry是否和sec_geometry有重疊,回傳結果為布林值 (True or False) (重疊定義: Polygon 是和sec_geometry為相同幾何類型,且兩者之間有部分重疊)
PositionAlongLine(distance) | 返回與起始點之間,間隔特定距離的點位
SymmetricDifference (sec_geometry) | 回傳PointGeometry 和sec_geometry之間的聯集減去PointGeometry和sec_geometry之間的交集的成果
Touches(second_geometry) | 判斷PointGeometry和sec_geometry兩者的邊界是否相交,回傳結果為布林值 (True or False)
Union(second_geometry) | 回傳PointGeometry 和sec_geometry之間的聯集
Within(second_geometry) | 判斷PointGeometry 是否完全落在sec_geometry中,的邊界是否相交,回傳結果為布林值 (True or False)

PointGeometry使用範例

import sgpy

#建立座標系統,之後建立pointGeometry物件 (只能傳入帶有一個平面點坐標的陣列)

spatial_reference=sgpy.SpatialReference(4326)

geo=sgpy.PointGeometry([10,10], spatial_reference, False, False)

#列印pointGeometry物件屬性

print geo.partCount

print geo.WKT

print geo.type


Point

Point物件是單一點。

語法:

Point (x, y, z, m, ID)

參數 | 說明 | 參數類型
X | 點的X坐標 | 雙精度浮點數
Y | 點的Y坐標 | 雙精度浮點數
Z | 點的Z坐標 | 雙精度浮點數
M | 點的M值 | 雙精度浮點數
ID | 點的ID值 | 長整數

Point物件屬性

參數 | 說明 | 參數類型
X (可讀寫) | 點的X坐標 | 雙精度浮點數
Y (可讀寫) | 點的Y坐標 | 雙精度浮點數
Z (可讀寫) | 點的Z坐標,代表高度 | 雙精度浮點數
M (可讀寫) | 點的量測值 | 雙精度浮點數
ID (可讀寫) | 點的ID值 | 長整數

Point 物件函數

類別函數 | 函數說明
clone (distance) | 依半徑, 建立並回傳Polygon的環域
Contains(sec_geometry) | 判斷Point是否有將sec_geometry完全包含,回傳結果為布林值 (True or False)
Crosses() | 判斷Point 是否和sec_geometry有相交,回傳結果為布林值 (True or False)
Disjoint(sec_geometry) | 判斷Point是否和sec_geometry有共同點,回傳結果為布林值 (True or False)
Equals(sec_geometry) | 判斷Point 是否和sec_geometry完全相同(所有點位完全相同,且geometry類型也相同),回傳結果為布林值 (True or False) (僅做2D比較,不比較Z值和M值)
Overlaps(sec_geometry) | 判斷Point是否和sec_geometry有重疊,回傳結果為布林值 (True or False) (重疊定義: Polygon 是和sec_geometry為相同幾何類型,且兩者之間有部分重疊)
Touches(second_geometry) | 判斷Point和sec_geometry兩者的邊界是否相交,回傳結果為布林值 (True or False)
Within(second_geometry) | 判斷Point 是否完全落在sec_geometry中,的邊界是否相交,回傳結果為布林值 (True or False)

Point使用範例

import sgpy

#建立新的點資料,並列印點位坐標,量測值與ID

geo=sgpy.Point(1,2,3,4,5)

print geo.X

print geo.Y

print geo.Z

print geo.M

print geo.ID


Mapping Module函數

Mapping Module函數為專門用來操作地圖文件的函數, 可以自行加入或移除圖層,或是列印出目前地圖上的現有的地圖元素資料,及匯出地圖,也可以用來取得地圖上的地圖元素或圖層,進行修改與設定,改變地圖內容

Mapping Module 函數分類表

分類項目 | 包含方法
Mapping Module | AddLayer RemoveLayer ListDataFrames ListLayers ListLayoutElements PrintMap ListPrinterNames ExportToImage


AddLayer

加入圖層到DataFrame中

語法:

AddLayer(dataframe,layer, position)

參數 | 說明 | 參數類型
dataframe | 要被加入的資料框架 | dataframe
layer | 要加入的layer | Layer物件
position | 加入的位置,可填入 AUTO_ARRANGE | 字串

AddLayer使用範例

import sgpy

pathname = "D:/temp/Line2.shp"

#建立layer物件

layer=sgpy.mapping.Layer(pathname)

sgd=sgpy.mapping.MapDocument("current")

df=sgd.activeDataFrame

#將layer加入DataFrame中

sgpy.mapping.AddLayer(df,layer,"AUTO_ARRANGE")

sgpy.RefreshActiveView()

del sgd,df


RemoveLayer

從DataFrame中移除特定圖層 (圖層存在時,才移除)

語法:

RemoveLayer(layer)

參數 | 說明 | 參數類型
layer | 要移除的layer | Layer物件

RemoveLayer使用範例

import sgpy

pathname = "D:/temp/Line2.shp"

layer=sgpy.mapping.Layer(pathname)

sgd=sgpy.mapping.MapDocument("current")

df=sgd.activeDataFrame

sgpy.mapping.AddLayer(df,layer,"AUTO_ARRANGE")

#移除加入的圖層

sgpy.mapping.RemoveLayer(df,layer)

sgpy.RefreshActiveView()

del sgd,df


ListDataFrames

從MapDocument中取得數據框架

語法:

ListDataFrames(sgd)

參數 | 說明 | 參數類型
sgd | DataFrame所屬的MapDocument | MapDocument

ListDataFrames使用範例

import sgpy

sgd=sgpy.mapping.MapDocument("current")

df=sgd.activeDataFrame

for df in sgpy.mapping.ListDataFrames(sgd):

print df.name

del sgd,df


ListLayers

從DataFrame中取的底下所有的圖層

語法:

ListLayers(DataFrame)

參數 | 說明 | 參數類型
DataFrame | 圖層所屬的DataFrame物件 | DataFrame物件

ListLayers使用範例

import sgpy

pathname = "D:/temp/Line2.shp"

layer=sgpy.mapping.Layer(pathname)

sgd=sgpy.mapping.MapDocument("current")

df=sgd.activeDataFrame

LayerList=sgpy.mapping.ListLayers(df)

#取得DataFrame底下的所有Layer並列印出Layer名稱

for layer in LayerList:

print layer.name

del sgd,df


ListLayoutElements

從DataFrame中移除特定圖層元素 (圖層存在時,才移除)

語法:

ListLayoutElements (layer,type)

參數 | 說明 | 參數類型
layer | 要移除的layer | Layer物件
type | 要取得的地圖元素類型, 為下列任一類型 TEXT_ELEMENT GRAPHIC_ELEMENT SURROUNDMAP_ELEMENT | 字串

ListLayoutElements使用範例

import sgpy

#取得目前地圖文件

sgd=sgpy.mapping.MapDocument("current")

#取得地圖文件輸出頁面上的元素

#列取得輸出版面上的文字地圖元素

TEles = sgpy.mapping.ListLayoutElements(sgd, 'TEXT_ELEMENT')

for TEle in TEles:

#列印地圖文字整飾屬性

print TEle.name

print TEle.type

print TEle.elementPositionX

print TEle.elementHeight


PrintMap

列印地圖,可選在地圖模式或輸出模式下列印

語法:

PrintMap (sgd,printername, data_frame)

參數 | 說明 | 參數類型
sgd | 要列印的地圖文件 | Mapdoucument物件
printername | 列印用的印表機名稱 | 字串
data_frame | 數據框架類型,為下列任一種 PAGE_LAYOUT 圖層集 | 字串

PrintMap使用範例

import sgpy

sgd = sgpy.mapping.MapDocument("current")

sgpy.mapping.PrintMap(sgd,r'Bullzip PDF Printer','PAGE_LAYOUT')

del sgd


ListPrinterNames

列印出印表機名稱

語法:

ListPrinterNames ()

回傳參數 | 說明 | 參數類型
PrinterNames | 可用來列的印表機名稱 | list

ListPrinterNames使用範例

import sgpy

for printerName in sgpy.mapping.ListPrinterNames():

print printerName

del sgd


ExportToImage

將DataFrame中的圖層匯出為影像

語法:

ExportToImage (sgd,outimgpath,dataframe, resolution)

參數 | 說明 | 參數類型
sgd | 要匯出的地圖文件 | MapDocument物件
outimgpath | 匯出影像檔的路徑 | 字串
dataframe | 數據框架類型,為下列任一種 PAGE_LAYOUT 圖層集 | 字串
resolution | 列印解析度 | 長整數

ExportToImage使用範例

import sgpy

sgd = sgpy.mapping.MapDocument("current")

sgpy.mapping.ExportToImage(sgd, r"D:\Project1.bmp", 'PAGE_LAYOUT',96)

del sgd


Mapping Module類別

Mapping Module類別底下有許多圖層物件和地圖元素物件,為透過Mapping Module函數對地圖文件進行操作後而取得,這些物件本身有提供一些方法和屬性,方便使用者用來對物件本身進行操作

Mapping Module相關物件分類表

分類項目 | 包含物件
Mapping | 1. DataFrame 2. GraduatedColorsSymbol 3. GraduatedSymbolsSymbol 4. GraphicElement 5. LabelClass 6. Layer 7. MapDocument 8. MapsurroundElement 9. PageLayout 10. PictureElement 11. RasterClassifiedSymbol 12. RasterUniqueSymbol 13. TextElement 14. UniqueValueSymbol


DataFrame

數據框架,可用來對框架底下的圖層進行操作

DataFrame物件屬性

參數 | 說明 | 參數類型
extent (可讀寫) | 數據框架的範圍 | extent
geographicTransformations (可讀寫) | 數據框架的坐標轉換關係,用來確保加入dataframe的圖資,都轉換到特定的坐標系統上 | 字串
layers (可讀寫) | 數據框架中的所有圖層 | 字串
mapUnits (唯讀) | 數據框架的地圖單位 地圖單位定義,為數據框架的坐標系統決定 | 字串
name (可讀寫) | 數據框架的名稱 | 字串
referenceScale (可讀寫) | 數據框架的參考尺度 | 雙精度浮點數
Scale (可讀寫) | 數據框架目前的尺度 | 雙精度浮點數
spatialReference (可讀寫) | 數據框架的坐標系統 | spatialReference

DataFrame 物件函數

類別函數 | 函數說明
fullExtent() | 將目前地圖縮放到最大範圍
panToExtent(extent) | 將目前地圖移動到指定範圍上
zoomToSelectedFeatures() | 縮放到被選擇的feature上

DataFrame使用範例

加入圖層

import sgpy

#讀取shp檔案,轉為圖層物件

layer=sgpy.mapping.Layer("D:/temp/Line2.shp")

#開啟地圖文件

sgd=sgpy.mapping.MapDocument("current")

#取得dataframe

df=sgd.activeDataFrame

#將圖層加到指定的data frame中

sgpy.mapping.AddLayer(df,layer,"AUTO_ARRANGE")

#建立extent物件

ext = sgpy.Extent(307319.656578944, 2776637.25, 308710.892457118, 2776970.39980263)

#將目前地圖view縮放到指定extent上

df.panToExtent(ext)

#將目前地圖view縮放到最大

df.fullExtent()

#將目前地圖view縮放所選取的features上

df.zoomToSelectedFeatures()

sgpy.RefreshActiveView()

del layer,sgd,df


GraphicElement

圖形元素 (TEXT_ELEMENT, MAPSURROUND_ELEMENT,PICTURE_ELEMENT以外的元素,都屬於圖形元素)

GraphicElement物件屬性

參數 | 說明 | 參數類型
elementHeight (可讀寫) | 圖形元素的高度 | 雙精度浮點數
elementPositionX (可讀寫) | 圖形元素的X坐標 | 雙精度浮點數
elementPositionY (可讀寫) | 圖形元素的Y坐標 | 雙精度浮點數
elementWidth (可讀寫) | 圖形元素的寬度 | 雙精度浮點數
name (可讀寫) | 圖形元素的名稱 | 字串
type (唯讀) | 圖形元素的類型,為 GRAPHIC_ELEMENT | 字串

GraphicElement 物件函數

類別函數 | 函數說明
clone(suffix) | 複製圖形元素 , suffix為用來標記圖形元素的文字
delete() | 刪除圖形元素

GraphicElement使用範例

import sgpy

#取得目前地圖文件

sgd=sgpy.mapping.MapDocument("current")

#列取得輸出版面上所有的地圖整飾元素

TEles = sgpy.mapping.ListLayoutElements(sgd, 'GRAPHIC_ELEMENT')

for TEle in TEles:

#列印地圖文字整飾屬性

print TEle.name

print TEle.type

print TEle.elementPositionX

print TEle.elementHeight


Layer

圖層集中的單一圖層物件

Layer物件屬性

參數 | 說明 | 參數類型
brightness (可讀寫) | 圖層的亮度值 (範圍在-100到100之間) | 長整數
contrast (可讀寫) | 圖層對比度值 (範圍在-100到100之間) | 長整數
datasetName (可讀寫) | 圖層資料的檔案名稱 | 字串
dataSource (可讀寫) | 圖層資料的檔案完整路徑 | 字串
definitionQuery (可讀寫) | 圖層資料的SQL查詢指令,只將符合指定查詢的資料顯示 | 字串
description(可讀寫) | 圖層資料的描述 | 字串
isFeatureLayer(唯讀) | 是否為FeatureLayer | 布林
isGroupLayer(唯讀) | 是否為GroupLayer | 布林
isRasterLayer(唯讀) | 是否為RasterLayer | 布林
maxScale(可讀寫) | 圖層最大比例尺 | 雙精度浮點數
minScale(可讀寫) | 圖層最小比例尺 | 雙精度浮點數
name(可讀寫) | 圖層名稱 | 字串
showLabels(可讀寫) | 圖層標題是否為顯示 | 布林
symbology(唯讀) | 圖層符號 | 物件
symbologyType(唯讀) | 圖層符號類型,為下列任一種 1. UNIQUE_VALUES 2. GRADUATED_COLORS 3. GRADUATED_SYMBOLS 4. RASTER_CLASSIFIED 5. RASTER_UNIQUE | 字串
transparency(可讀寫) | 圖層透明度 (介於0到100之間) | 長整數
visible(可讀寫) | 圖層是否可見 | 布林
workspacePath(唯讀) | 圖層所在資料夾路徑 | 字串
fieldInfo (唯讀) | 圖層的屬性欄位資訊 | fieldInfo物件
labelObject (可讀寫) | 圖層的labelClass物件 | labelClass物件
definitionQuery (可讀寫) | 圖層查詢式,僅將符合特定條件的資料顯示於地圖中 | 字串

Layer 物件函數

類別函數 | 函數說明
getExtent() | 取得目前Layer的範圍
Save() | 將圖層儲存起來
saveACopy (file_name) | 將圖層另存為指定檔案名稱
ImportSymbology(Symbology_path) | 匯入圖層符號設定檔,降預設分類符號套用到目前圖層上

Layer使用範例

import sgpy

sgd=sgpy.mapping.MapDocument("current")

df=sgd.activeDataFrame

layerlist = sgpy.mapping.ListLayers(df)

#取得第一個圖層,並列印訊息

lyr = layerlist[0]

#匯入圖層符號

lyr.ImportSymbology(r"C:\Users\Wilson\Desktop\Symbology.ssf")

#下達圖層查詢式,只顯示符合特定條件資料

lyr.definitionQuery = "[FID] > 2"

print lyr.name

print lyr.visible

del sgd,df


Deleting Features

LabelClass

標記圖層物件 (只有在勾選標記圖層時,才會有此物件)

LabelClass物件屬性

參數 | 說明 | 參數類型
expression (可讀寫) | 標記圖層用到的屬性欄位 | 字串
className (可讀寫) | 標記圖層物件的名稱 | 字串
SQLQuery (可讀寫) | 標記圖層物件的SQL查詢式,僅符合查詢條件的圖徵才會顯示 | 字串
showClassLabels (唯讀) | 是否有標記圖層 有的話會回傳True | 布林

LabelClass使用範例

import sgpy

sgd=sgpy.mapping.MapDocument("current")

df=sgd.activeDataFrame

layerlist = sgpy.mapping.ListLayers(df)

lyr = layerlist[0]

#取得標記圖層物件, 圖層勾選”顯示標記”時,才會回傳此物件

labelClass = lyr.labelObject

print labelClass.expression

print labelClass.showClassLabels

print labelClass.SQLQuery

print labelClass.classname

del sgd,df


MapDocument

地圖文件物件

語法

MapDocument (sgd_path)

參數 | 說明 | 參數類型
sgd _path | 地圖文件檔案完整路徑 | 字串

MapDocument物件屬性

參數 | 說明 | 參數類型
activeDataFrame (唯讀) | 回傳DataFrame物件 | DataFrame
activeView (可讀寫) | 設置地圖顯示模式,有下列幾種 1. 圖層集: 地圖模式 2. PAGE_LAYOUT: 輸出模式 | 字串
author (可讀寫) | 地圖文件的作者 | 字串
filePath (可讀寫) | 地圖文件的檔案完整路徑 | 字串
title (可讀寫) | 地圖文件的名稱 | 字串
pageLayout | pageLayout物件 | pageLayout

MapDocument 物件函數

類別函數 | 函數說明
save() | 將地圖文件儲存起來
saveACopy(file_name) | 將地圖文件另存為指定檔案名稱

MapDocument使用範例

import sgpy

#開啟目前地圖文件

sgd=sgpy.mapping.MapDocument("current")

#列印地圖文件訊息

print sgd.filePath

#另存目前地圖文件,到新的路徑中

sgd.saveACopy("D:/temp/tt.sgd")


MapsurroundElement

地圖整飾元素 (有文字（標題及其他說明）、圖例、比例尺、指北針、圖片、外加圖形等。), 僅在輸出模式時才會顯示

MapsurroundElement物件屬性

參數 | 說明 | 參數類型
elementHeight (可讀寫) | 地圖整飾元素的高度 | 雙精度浮點數
elementPositionX (可讀寫) | 地圖整飾元素的X坐標 | 雙精度浮點數
elementPositionY (可讀寫) | 地圖整飾元素的Y坐標 | 雙精度浮點數
elementWidth (可讀寫) | 地圖整飾元素的寬度 | 雙精度浮點數
name (可讀寫) | 地圖整飾元素的名稱 | 字串
type (唯讀) | 地圖整飾元素的類型,為下列任一種 1. MAPSURROUND_ELEMENT | 字串

MapsurroundElement使用範例

import sgpy

#取得目前地圖文件

sgd=sgpy.mapping.MapDocument("current")

#列取得輸出版面上所有的地圖整飾元素

TEles = sgpy.mapping.ListLayoutElements(sgd, 'MAPSURROUND_ELEMENT')

for TEle in TEles:

#列印地圖文字整飾屬性

print TEle.name

print TEle.type

print TEle.elementPositionX

print TEle.elementHeight


PageLayout

地圖頁面輸出物件

PageLayout物件屬性

參數 | 說明 | 參數類型
elements | 地圖頁面輸出的元素 |
dataFrames | 地圖頁面輸出的dataframe |

PageLayout 物件函數

類別函數 | 函數說明
printMap(printname,outputpath) | 將目前地圖列印出來

PageLayout使用範例

import sgpy

#開啟目前地圖文件

sgd=sgpy.mapping.MapDocument("current")

#取得頁面輸出物件

pageLayout =sgd.pageLayout

#另存目前地圖文件,到新的路徑中

pageLayout.printMap("PDFillWriter","D:/temp/test.jpg")


PictureElement

地圖圖片元素 (已加入地圖的圖片元素)

PictureElement物件屬性

參數 | 說明 | 參數類型
elementHeight (可讀寫) | 地圖圖片元素的高度 | 雙精度浮點數
elementPositionX (可讀寫) | 地圖圖片元素的X坐標 | 雙精度浮點數
elementPositionY (可讀寫) | 地圖圖片元素的Y坐標 | 雙精度浮點數
elementWidth (可讀寫) | 地圖圖片元素的寬度 | 雙精度浮點數
name (可讀寫) | 地圖圖片元素的名稱 | 字串
type (唯讀) | 地圖圖片元素的類型,為下列任一種 PICTURE_ELEMENT | 字串
sourceImage(唯讀) | 來源圖片的檔案路徑 | 字串

PictureElement使用範例

import sgpy

#取得目前地圖文件

sgd=sgpy.mapping.MapDocument("current")

#列取得輸出版面上所有的地圖圖片元素

TEles = sgpy.mapping.ListLayoutElements(sgd, 'PICTURE_ELEMENT')

for TEle in TEles:

#列印地圖圖片元素屬性

print TEle.name

print TEle.type

print TEle.elementPositionX

print TEle.elementHeight


TextElement

地圖文字元素 (被加在地圖上的文字)

TextElement物件屬性

參數 | 說明 | 參數類型
elementHeight (可讀寫) | 地圖文字元素的高度 | 雙精度浮點數
elementPositionX (可讀寫) | 地圖文字元素的X坐標 | 雙精度浮點數
elementPositionY (可讀寫) | 地圖文字元素的Y坐標 | 雙精度浮點數
elementWidth (可讀寫) | 地圖文字元素的寬度 | 雙精度浮點數
name (可讀寫) | 地圖文字元素的名稱 | 字串
type (唯讀) | 地圖文字元素的類型,為下列任一種 1. TEXT_ELEMENT | 字串
text(可讀寫) | 地圖文字元素的文字 | 字串

TextElement 物件函數

類別函數 | 函數說明
clone(name) | 複製地圖文字元素, 並將複製文字元素設定為新名稱
delete() | 刪除地圖文字元素

TextElement使用範例

import sgpy

#取得目前地圖文件

sgd=sgpy.mapping.MapDocument("current")

#列取得輸出版面上所有的地圖文字元素

TEles = sgpy.mapping.ListLayoutElements(sgd, 'TEXT_ELEMENT')

for TEle in TEles:

#列印地圖文字元素屬性

print TEle.text

print TEle. elementPositionX

print TEle. elementHeight


RasterClassifiedSymbol

網格資料分級符號,依門檻值將資料分類後,再給予每一分類不同符號,代表不同分類,每一分類的符號可依使用者喜好自由設定

RasterClassifiedSymbol物件屬性

參數 | 說明 | 參數類型
valueField (可讀寫) | 分級符號設定用的屬性欄位名稱 | 字串
classBreakLabels (可讀寫) | 分級門檻值的文字標籤 方便使用者了解分級意義 | List
classBreakValues (可讀寫) | 分級門檻值,只要屬性欄位值符合某區間者,會被分類到該區間 | List
numClasses (可讀寫) | 目前的分級數量 | 長整數

RasterClassifiedSymbol 物件函數

類別函數 | 函數說明
reclassify() | 將分類設定重置為系統初始設定

RasterClassifiedSymbol使用範例

import sgpy

# 取得目前地圖文件

sgd = sgpy.mapping.MapDocument("current")

# 取得目前dataframe

df = sgd.activeDataFrame

# 取得第一層

lyr = sgpy.mapping.ListLayers(df)[0]

# 如果分類符號屬於”分級符號渲染器”

if lyr.symbologyType == " RASTER_CLASSIFIED":

#依設定重新分類

sym = lyr.symbology

sym.numClasses = 2

sym.reclassify()

# 更新地圖

sgpy.RefreshActiveView()

sgpy.RefreshTOC()

del sgd, df


RasterUniqueSymbol

網格資料獨立數值分類符號

RasterUniqueSymbol物件屬性

參數 | 說明 | 參數類型
valueField (可讀寫) | 分類符號設定用的屬性欄位名稱 | 字串
classLabels (可讀寫) | 屬於此分類的對應文字標籤 方便使用者了解分級意義 | List
classValues (可讀寫) | 屬於此分類的唯一數值 | List
showOtherValues (可讀寫) | 是否顯示不屬於此分類的其他數值 | 布林

RasterUniqueSymbol 物件函數

類別函數 | 函數說明
addAllValues() | 將所有值資料,都預設為此分類符號

RasterUniqueSymbol使用範例

import sgpy

sgd = sgpy.mapping.MapDocument("current")

df = sgd.activeDataFrame

lyr = sgpy.mapping.ListLayers(df)[0]

#如果圖層符號為獨立數值符號 Set symbology

if lyr.symbologyType == "RASTER_UNIQUE":

sym = lyr.symbology

#取得設定獨立數值的欄位名稱

print sym.valueField

del sgd,df


Nearest Distance Tool

UniqueValueSymbol

獨立數值分類符號

UniqueValueSymbol物件屬性

參數 | 說明 | 參數類型
valueField (可讀寫) | 分類符號設定用的屬性欄位名稱 | 字串
classLabels (可讀寫) | 屬於此分類的對應文字標籤 方便使用者了解分級意義 | List
classValues (可讀寫) | 屬於此分類的唯一數值 | List
showOtherValues (可讀寫) | 是否顯示不屬於此分類的其他數值 | 布林

UniqueValueSymbol 物件函數

類別函數 | 函數說明
addAllValues () | 將所有值資料,都預設為此分類符號

UniqueValueSymbol使用範例

import sgpy

lyr = sgpy.mapping.ListLayers(df)[0]

#設定圖層符號為獨立數值符號

if lyr.symbologyType == "UNIQUE_VALUES":

sym = lyr.symbology

sym.valueField="RD_Type"

sym.classValues=["A","B","C","D","E","F"]

sym.classLabels=["尚未開闢道路","道路線型不符","道路寬度不符","兩者皆不符","非提報道路","兩者符合"]

sgpy.RefreshActiveView()

sgpy.RefreshTOC()

del sgd,df


Midpoint Tool

GraduatedColorsSymbol

分級色彩,依門檻值將資料分類後,再給予每一分類不同顏色,代表不同分類

GraduatedColorsSymbol物件屬性

參數 | 說明 | 參數類型
valueField (可讀寫) | 分類符號設定用的屬性欄位名稱 | 字串
classBreakLabels (可讀寫) | 每一分類的對應標籤(通常為最大最小門檻值組成的區間) 方便使用者了解分級意義 | List
classBreakValues (可讀寫) | 用來分類的門檻值 | List
numClasses (可讀寫) | 目前分類要使用的分級數量 | 長整數
normalization (可讀寫) | 標準化分級色彩設定用的屬性欄位名稱 | 字串

GraduatedColorsSymbol物件函數

類別函數 | 函數說明
reclassify() | 依設定重新分類

GraduatedColorsSymbol使用範例

import sgpy

# 取得目前地圖文件

sgd = sgpy.mapping.MapDocument("current")

# 取得目前dataframe

df = sgd.activeDataFrame

# 取得第一層

lyr = sgpy.mapping.ListLayers(df)[0]

# 如果分類符號屬於”分級色彩”

if lyr.symbologyType == "GRADUATED_COLORS":

#依設定重新分類

sym = lyr.symbology

sym.valueField="Id"

sym.numClasses = 2

sym.reclassify()

# 更新地圖

sgpy.RefreshActiveView()

sgpy.RefreshTOC()

# Release Map, Release DataFrame

del sgd


Sketch Tool

GraduatedSymbolsSymbol

分級符號,依門檻值將資料分類後,再給予每一分類不同符號,代表不同分類

每一分類的符號可依使用者喜好自由設定

GraduatedSymbolsSymbol物件屬性

參數 | 說明 | 參數類型
valueField (可讀寫) | 分級符號設定用的屬性欄位名稱 | 字串
classBreakLabels (可讀寫) | 每一分類的對應標籤(通常為最大最小門檻值組成的區間) 方便使用者了解分級意義 | List
classBreakValues (可讀寫) | 用來分類的門檻值 | List
numClasses (可讀寫) | 目前的分級數量,或者用來設定分級數量 | 長整數
Normalization (可讀寫) | 標準化分級符號設定用的屬性欄位名稱 | 字串

GraduatedSymbolsSymbol 物件函數

類別函數 | 函數說明
reclassify() | 依設定重新分類

GraduatedSymbolsSymbol使用範例

import sgpy

# 取得目前地圖文件

sgd = sgpy.mapping.MapDocument("current")

# 取得目前dataframe

df = sgd.activeDataFrame

# 取得第一層

lyr = sgpy.mapping.ListLayers(df)[0]

# 如果分類符號屬於”分級符號渲染器”

if lyr.symbologyType == "GRADUATED_SYMBOLS":

#依設定重新分類

sym = lyr.symbology

sym.valueField="Id"

sym.numClasses = 2

sym.reclassify()

# 更新地圖

sgpy.RefreshActiveView()

sgpy.RefreshTOC()

# Release Map, Release DataFrame

del sgd,df


Describe

Describe類別為對各物件的補充描述資料,主要可透過Describe方法取得,依據不同的物件類型,會取得相對應類型的描述資料,如下

Describe 相關物件分類表

分類項目 | 包含物件 | 取得來源
Describe | 1. FeatureClassProp 2. FileProp 3. LayerProp 4. PrjFileProp 5. RasterBandProp 6. TableProp 7. TINProp 8. TopologyProp | 1. FeatureClass 2. File 3. Layer 4. PrjFile 5. Raster 6. Table 7. TIN 8. Topology


FeatureClassProp

FeatureClass描述資料,內有featureClass相關補充說明

FeatureClassProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串
hasM(唯讀) | 是否有M值 | 布林
hasZ(唯讀) | 是否有Z值 | 布林
shpType(唯讀) | Feature Class幾何類型, 為下列任一種 Point PointZ (有Z值) MulitPoint MulitPointZ (有Z值) PolyLine PolyLineZ (有Z值) Polygon PolygonZ (有Z值) | 字串

FeatureClassProp使用範例

import sgpy

#讀取shp檔案描述屬性

fc =sgpy.Describe("D:/temp/Line2.shp")

#取得”副檔名”,”幾何類型”等屬性

shptype=fc.shapeType

extension =fc.extension

del fc

#列印屬性

print str(shptype)

print str(extension)


FileProp

檔案描述資料

FileProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串

FileProp使用範例

import sgpy

#讀取shp檔案描述屬性

fc =sgpy.Describe("D:/temp/Line2.shp")

#取得”副檔名”,”檔案路徑”等屬性,並列印

path=fc.path

extension =fc.extension

del fc

print str(path)

print str(extension)


Rearranging the columns

LayerProp

圖層物件描述資料

LayerProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串
spatialReference (唯讀) | 座標系統 | spatialReference
hasM (唯讀) | 是否有M值 | 布林
hasZ (唯讀) | 是否有Z值 | 布林
bandCount (唯讀) | 波段數 | 長整數
shapeType (唯讀) | Feature Class幾何類型, 為下列任一種 Point PointZ (有Z值) MulitPoint MulitPointZ (有Z值) PolyLine PolyLineZ (有Z值) Polygon PolygonZ (有Z值) | 字串
format (唯讀) | 格式 | 字串
featureClass (唯讀) | featureClass |
table (唯讀) | 圖層屬性表格 |

LayerProp使用範例

import sgpy

#讀取shp檔案描述屬性 (只有圖層檔,副檔名為slr者,才能取得LayerProp)

fc =sgpy.Describe("D:/temp/Line2.slr")

#取得”副檔名”,”檔案路徑”等屬性,並列印

path=fc.path

extension =fc.extension

del fc

print str(path)

print str(extension)


PrjFileProp

Prj檔案(投影座標系統檔案)描述資料

PrjFileProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串
spatialReference (唯讀) | 坐標系統 | spatialReference

PrjFileProp使用範例

import sgpy

#讀取shp檔案描述屬性 (只有副檔名為prj者,才能取得PrjFileProp)

fc =sgpy.Describe("D:/temp/Line2.prj")

#取得”副檔名”,”檔案路徑”等屬性,並列印

path=fc.path

extension =fc.extension

del fc

print str(path)

print str(extension)


RasterBandProp

網格影像基本描述資料

RasterBandProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串
height (唯讀) | raster高度 | 雙精度浮點數
width (唯讀) | Raster寬度 | 雙精度浮點數
meanCellHeight (唯讀) | Cell平均高度 | 雙精度浮點數
meanCellWidth (唯讀) | Cell平均寬度 | 雙精度浮點數
pixelType (唯讀) | 網格資料類型, 為下列任一種 | 字串
noDataValue (唯讀) | 代表沒有網格資料的值 | 雙精度浮點數
primaryField (唯讀) | 網格資料檔案路徑 | 字串

RasterBandProp使用範例

import sgpy

#讀取jpg檔案(網格資料)描述屬性

fc =sgpy.Describe("D:/temp/0001095.jpg")

#取得”影像長度”,”影像寬度”等屬性,並列印

print fc.height

print fc.width

del fc


TableProp

屬性表格物件描述資料

TableProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串
spatialReference (唯讀) | 坐標系統 | spatialReference
extent (唯讀) | 範圍 | extent
fields (唯讀) | Table的所有屬性欄位 | Field物件集合

TableProp使用範例

import sgpy

#讀取slr檔案描述屬性 (只有圖層檔,副檔名為slr者,才能取得LayerProp)

fc =sgpy.Describe("D:/temp/Line2.slr")

#取得LayerProp的table

tableprop=fc.table

#取得”副檔名”,”檔案路徑”等屬性,並列印

path = tableprop.path

extension = tableprop.extension

del fc

print str(path)

print str(extension)


TINProp

三角網物件描述資料

TINProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串
hasEdgeTagValues (唯讀) | 有無邊界值 | 布林
hasNodeTagValues (唯讀) | 有無節點值 | 布林
hasTriangleTagValues (唯讀) | 有無三角網值 | 布林
isDelaunay (唯讀) | 是否為Delaunay三角網 | 布林
ZFactor (唯讀) | 是否有Z值 | 布林

TINProp使用範例

import sgpy

#讀取TIN檔案描述屬性

fc =sgpy.Describe("D:/temp/penghu1_RasterToTIN")

#取得等屬性,並列印

print fc.hasEdgeTagValues

print fc.hasNodeTagValues

del fc


TopologyProp

拓樸關係描述資料

TopologyProp物件屬性

參數 | 說明 | 參數類型
extension (唯讀) | 檔案副檔名 | 字串
file (唯讀) | 檔案名稱 | 字串
path (唯讀) | 檔案路徑 | 字串
clusterTolerance (唯讀) | 拓樸關係容忍值 | 雙精度浮點數
featureClassNames (唯讀) | featureClass名稱 | 字串
maximumGeneratedErrorCount (唯讀) | 產生拓樸關係時, 出現最多的錯誤次數 | 長整數

TopologyProp使用範例

import sgpy

#讀取Topology layer描述屬性

fc =sgpy.Describe("D:/temp/New Personal Geodatabase/ road97")

#取得屬性,並列印

print fc. clusterTolerance